'''
给定一段包含多个中国手机号码的文本，要求提取出所有符合格式的手机号码。


content = """njskfs19989881888sbajkbffs.,
nbkjsc15545235565,njc665655456"""
import re
patter1[3-9]{9}
num = re.findall(pattern,content)
print(num)
'''

'''
从webpage_phone_numbers.txt文
文件中提取并输出所有符合格式的中国手机号码。

import re
with open("webpage_phone_numbers.txt","r",encoding="utf-8") as f:
    content = f.read()

# pattern r"1[3-9]{9}
num = re.findall(pattern,content)
print(num)
'''

'''
定义一个函数，验证密码是否符合规范：
1.长度位于6-20之间
2.必须包含至少1个小写字母
3.必须包含至少1个大写字母
4.必须包含至少1个数字
5.必须包含至少1个特殊字符

import re

def right_passwords(password):
    if not 6 <=len(password) <= 20:
        return False,"密码长度错误"
    if not re.findall(r"[a-z]",password):
        return False,"密码没有小写字母"
    if not re.findall(r"[A-Z]",password):
        return False,"密码没有大写字母"
    if not re.findall(r"[0-9]",password):
        return False,"密码没有数字"
    if not re.findall(r"[^a-zA-Z0-9]",password):
        return False,"密码没有特殊字符"
    else:
        return True,None

print(right_passwords("1asA,d123"))
'''
'''
import re
from typing import Tuple

class PasswordError(ValueError):
    """专用异常，携带错误码，方便上层精确处理。"""
    codes = {
        'length': '密码长度必须在 6-20 位之间',
        'lower':  '至少包含 1 个小写字母',
        'upper':  '至少包含 1 个大写字母',
        'digit':  '至少包含 1 个数字',
        'special':'至少包含 1 个特殊字符（非字母、非数字）'
    }

    def __init__(self, code: str):
        self.code = code
        super().__init__(self.codes[code])


# 预编译正则，提升性能
_patterns = {
    'lower':  re.compile(r'[a-z]'),
    'upper':  re.compile(r'[A-Z]'),
    'digit':  re.compile(r'\d'),
    'special':re.compile(r'[^a-zA-Z0-9]')
}

def validate_password(pwd: str) -> Tuple[bool, None]:
    """
    校验密码，全部通过返回 (True, None)。
    任意失败抛出 PasswordError，上层可自行捕获。
    """
    if not 6 <= len(pwd) <= 20:
        raise PasswordError('length')

    for key, pattern in _patterns.items():
        if not pattern.search(pwd):
            raise PasswordError(key)

    return True, None


# ------------------ 使用示例 ------------------
if __name__ == '__main__':
    try:
        validate_password("1asdA,123")
    except PasswordError as e:
        print("校验失败：", e)          # 校验失败： 至少包含 1 个大写字母

    print(validate_password("1aSd123!"))  # (True, None)
'''

'''
给定一段包含多个邮箱地址的文本，要求提取出所有标准的邮箱地址。


import re

pattern = re.compile(
[0-9a-zA-Z_-]+
@
[0-9a-zA-Z_-]+
\.
[a-z]{2,4}
,re.VERBOSE)

results = pattern.findall(content)
for rersult in results:
    print(rerult)
'''

'''
给定一段包含购物信息的文本，要求提取出每样物品的购买数量（以斤为单位）、物品名称以及所
花费的金额。

import re

for line in content.split("\n")
    pattern = r"(\d+)斤（.+)花了（\d+(\.\d+)?）元"
    match = re.search(pattern, line)
    if match:
        print(f"{match.group(1)}\t{match.group(2)}\t{match.group(3)}")
'''